package com.yidu.hbatsft.service.impl;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.yidu.hbatsft.dao.AtsBaseItemMapper;
import com.yidu.hbatsft.dao.AtsSchemeExpertMapper;
import com.yidu.hbatsft.domain.AtsBaseItem;
import com.yidu.hbatsft.service.AtsBaseItemService;
import com.yidu.utils.AtsBaseItemTree;
import com.yidu.utils.Page;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;

/**
 * @author yjj
 */
@Service
public class AtsBaseItemServiceImpl implements AtsBaseItemService {
    static List<AtsBaseItem> childMenu = new ArrayList<AtsBaseItem>();
    @Resource
    AtsBaseItemMapper atsBaseItemMapper;

    @Override
    public List<AtsBaseItem> selectAll() {
        return atsBaseItemMapper.selectAll();
    }

    /**
     * 此方法为小递归，要是那个傻逼动了老子代码，老子锤死他。
     * @param integer
     * @return
     */
    @Override
    public int updelete(Integer integer) {
        List<AtsBaseItem> list = atsBaseItemMapper.selectAllId(integer);
        for (Iterator iterator = list.iterator(); iterator.hasNext();) {
            AtsBaseItem atsBaseItem = (AtsBaseItem) iterator.next();
            Integer i = atsBaseItemMapper.selectCount(atsBaseItem.getItemId());
            if(i>0){
                System.out.println("有值的：");
                updelete(atsBaseItem.getItemId());
            }else{
                System.out.println("没值的：");
                atsBaseItemMapper.updelete(atsBaseItem.getItemId());
                continue;
            }
        }
        return atsBaseItemMapper.updelete(integer);
    }

    @Override
    public int insert(AtsBaseItem atsBaseItem) {
        atsBaseItem.setIsva(1);
        return atsBaseItemMapper.insert(atsBaseItem);
    }

    @Override
    public int updateByPrimaryKeySelective(AtsBaseItem atsBaseItem) {
        return atsBaseItemMapper.updateByPrimaryKeySelective(atsBaseItem);
    }

    @Override
    public AtsBaseItem findId(int id) {
        return atsBaseItemMapper.selectByPrimaryKey(id);
    }

    @Override
    public List<AtsBaseItem> selectAllId(Integer id) {
        return atsBaseItemMapper.selectAllId(id);
    }

    @Override
    public Integer selectCount(Integer Integer) {
        return atsBaseItemMapper.selectCount(Integer);
    }

    /**
     * 下拉树
     * @param nodes
     * @return
     */
    public List<AtsBaseItemTree> createTree(List<AtsBaseItemTree> nodes) {
        if (nodes == null || nodes.size() < 0){
            return null;
        }
        List<AtsBaseItemTree> nodeList = new ArrayList<>();// 根节点自定义，但是要和pid对应好
        // 将所有节点添加到多叉树中
        for (AtsBaseItemTree node : nodes) {
            if (node.getValue().equals("0")) {// 根节点自定义，但是要和pid对应好
                // 向根添加一个节点
                nodeList.add(node);
            } else {
                for (AtsBaseItemTree item : nodes) {
                    if (item.getId().equals(node.getValue())) {
                        item.getChildren().add(node);
                        item.setData(item.getChildren());
                        break ;
                    }
                }
            }
        }
        return nodeList;
    }

}
